import base64
import urllib
import requests
import json

API_KEY = "yjY7SqgSmtAIrT09lzw9oQhx"
SECRET_KEY = "AQyOkxMzeo6jHUpJUZc7SsT73ohQtT3a"

def search_Face():
        
    url = "https://aip.baidubce.com/rest/2.0/face/v3/search?access_token=" + get_access_token()
    
    # image 可以通过 get_file_content_as_base64("C:\fakepath\微信图片_20250321164625.jpg",False) 方法获取
    payload = json.dumps({
        "group_id_list": "test1",
        "image": get_file_content_as_base64("/tmp/SearchFace.jpg"),
        "image_type": "BASE64"
    }, ensure_ascii=False)
    headers = {
        'Content-Type': 'application/json'
    }
    
    response = requests.request("POST", url, headers=headers, data=payload.encode("utf-8")).json()
    if response.get("error_msg") == "SUCCESS":
        result = response.get("result").get("user_list")[0]
        # {'group_id': 'test1', 'user_id': 'hyx', 'user_info': '', 'score': 96.68011474609375}
        str_result = f'{result.get("user_id")},{result.get("score")}'
        print(str_result)
        
    else:
        str_result = f'false,0'
    return str_result
    

def get_file_content_as_base64(path, urlencoded=False):
    """
    获取文件base64编码
    :param path: 文件路径
    :param urlencoded: 是否对结果进行urlencoded 
    :return: base64编码信息
    """
    with open(path, "rb") as f:
        content = base64.b64encode(f.read()).decode("utf8")
        if urlencoded:
            content = urllib.parse.quote_plus(content)
    return content

def get_access_token():
    """
    使用 AK，SK 生成鉴权签名（Access Token）
    :return: access_token，或是None(如果错误)
    """
    url = "https://aip.baidubce.com/oauth/2.0/token"
    params = {"grant_type": "client_credentials", "client_id": API_KEY, "client_secret": SECRET_KEY}
    return str(requests.post(url, params=params).json().get("access_token"))

# if __name__ == '__main__':
#     search_Face()
